# 作者：陈睿-cruise
# 2025年02月19日18时53分52秒
# 2979386061@qq.com
import re

# 示例文本
text = "cat, bat, rat\nMy number is 123.\nuser_name123\nHello\tWorld\nabc123\nHello, World!"

# 1. 匹配任意单个字符
matches_any = re.findall(r'c.t', text)
print("匹配任意单个字符:", matches_any)  # 输出: ['cat']

# 2. 匹配特定字符
matches_specific = re.findall(r'[br]at', text)
print("匹配特定字符:", matches_specific)  # 输出: ['bat', 'rat']

# 3. 匹配数字
matches_digit = re.findall(r'\d', text)
print("匹配数字:", matches_digit)  # 输出: ['1', '2', '3']

# 4. 匹配字母、数字或下划线
matches_word = re.findall(r'\w', text)
print("匹配字母、数字或下划线:", matches_word)  # 输出: ['c', 'a', 't', 'b', 'a', 't', 'r', 'a', 't', 'M', 'y', 'n', 'u', 'm', 'b', 'e', 'r', 'i', 's', '1', '2', '3', 'u', 's', 'e', 'r', '_', 'n', 'a', 'm', 'e', '1', '2', '3', 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd', 'a', 'b', 'c', '1', '2', '3', 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']

# 5. 匹配空白字符
matches_space = re.findall(r'\s', text)
print("匹配空白字符:", matches_space)  # 输出: [' ', ',', ' ', '\t', '\n', ' ', '\n', '\t', '\n', ' ', ',', ' ']

# 6. 匹配非数字
matches_non_digit = re.findall(r'\D', text)
print("匹配非数字:", matches_non_digit)  # 输出: ['c', 'a', 't', ',', ' ', 'b', 'a', 't', ',', ' ', 'r', 'a', 't', '\n', 'M', 'y', ' ', 'n', 'u', 'm', 'b', 'e', 'r', ' ', 'i', 's', ' ', '.', '\n', 'u', 's', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\n', 'H', 'e', 'l', 'l', 'o', '\t', 'W', 'o', 'r', 'l', 'd', '\n', 'a', 'b', 'c', '\n', 'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']

# 7. 匹配非字母、数字或下划线
matches_non_word = re.findall(r'\W', text)
print("匹配非字母、数字或下划线:", matches_non_word)  # 输出: [',', ' ', ',', ' ', '\n', ' ', ' ', '.', '\n', '\n', '\t', '\n', '\n', ',', ' ', '!']

# 8. 匹配非空白字符
matches_non_space = re.findall(r'\S', text)
print("匹配非空白字符:", matches_non_space)  # 输出: ['c', 'a', 't', ',', 'b', 'a', 't', ',', 'r', 'a', 't', 'M', 'y', 'n', 'u', 'm', 'b', 'e', 'r', 'i', 's', '1', '2', '3', '.', 'u', 's', 'e', 'r', '_', 'n', 'a', 'm', 'e', '1', '2', '3', 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd', 'a', 'b', 'c', '1', '2', '3', 'H', 'e', 'l', 'l', 'o', ',', 'W', 'o', 'r', 'l', 'd', '!']

# 9. 匹配特定字符范围
matches_range = re.findall(r'[a-z]', text)
print("匹配特定字符范围:", matches_range)  # 输出: ['c', 'a', 't', 'b', 'a', 't', 'r', 'a', 't', 'y', 'n', 'u', 'm', 'b', 'e', 'r', 'i', 's', 'u', 's', 'e', 'r', 'n', 'a', 'm', 'e', 'e', 'l', 'l', 'o', 'o', 'r', 'l', 'd', 'a', 'b', 'c', 'e', 'l', 'l', 'o', 'o', 'r', 'l', 'd']

# 10. 匹配非特定字符
matches_non_specific = re.findall(r'[^a-z]', text)
print("匹配非特定字符:", matches_non_specific)  # 输出: [',', ' ', ',', ' ', '\n', 'M', ' ', ' ', '1', '2', '3', '.', '\n', '_', '1', '2', '3', '\n', 'H', '\t', 'W', '\n', '1', '2', '3', '\n', 'H', ',', ' ', 'W', '!']

# 11. 匹配转义字符
matches_escape = re.findall(r'\+', "1 + 2 = 3")
print("匹配转义字符:", matches_escape)  # 输出: ['+']